package Lee_code;

import java.util.Arrays;

/**
 * @author blh
 * @date 2024年09月27日 9:49
 */
public class Lee_516_927 {
    public int longestPalindromeSubseq(String s) {
        int len = s.length();
        int[][] dp = new int[len + 1][len + 1];
        String rs = new StringBuilder(s).reverse().toString();
        // 问题转换为求rs和s的最大公共子串
        for (int i = 0; i < len; i++) {
            for (int j = 0; j < len; j++) {
                if (s.charAt(i) == rs.charAt(j)) {
                    dp[i + 1][j + 1] = dp[i][j] + 1;
                } else {
                    dp[i + 1][j + 1] = Math.max(dp[i][j], dp[i][j + 1]);
                }
            }
        }
        return dp[len][len];
    }
}
